home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 February
/
CHIP Şubat 1998.iso
/
drivers
/
SESK
/
exme3201
/
MED3201.ROM
< prev
next >
Wrap
Text File
|
1996-07-02
|
34KB
|
757 lines
;------------------------------------------------------------------------------
;
; File: med3201.rom
; Version: 1.2
; Board: Data Expert, MED3201 - Based on AMD LT-1
; Chip: Am78C201 C0 Alpha
; Author: Ali Sobhi
; Copyright: Advanced Micro Devices,Inc., 1996. All Rights Reserved.
;
; Description: This PnP EEPROM map file is designed to activate the
; resources on an AMD Am78C201-C0 Interwave which is used
; in LT-1 board
;
; This map does not activate CD-ROM (i.e. no resources) and
; also activates the 6th logical device on IW (i.e.
; EXTERNAL TELEPHONY) with only I/O port resources needed
; and not any IRQ, DMA, or DRAM resources.
;
; Note: Since EEPROM on our designs has only 512 Bytes to store,
; make sure we don't have more than that. PNPMAP.EXE does
; not check for this maximum size.
;
;------------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;
; NOTE: Very important
;
; To write this EEPROM map to an EEPROM, use PNPMAP.EXE, provided by AMD.
; Do not use any version of EEWRITE; the various versions of EEWRITE
; floating around come in various flavors; some do not support comments,
; others do not support quoted strings. Others support comments only at
; the beginning of a line, not at the end. Just use PNPMAP.EXE, the
; officially supported version from Advanced Micro Devices.
;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;
; Change History:
; 5/1/96 Ali Sobhi - Initial version based on LT2.ROM
; 5/13/96 Ali Sobhi - Changed the PnP Vendor ID
; 5/26/96 Ali Sobhi - Changed to map to use B2 IC and GPOUT
;
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
; PnP Header
;
; The PnP header contains the 72-bit "serial identifier", used by PnP
; initialization software to isolate the PnP device.
;---------------------------------------------------------------------------
; Vendor ID = DXP3201
; Serial No = 00000001
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x32 ; Vendor assigned product number (byte 0)
0x01 ; Vendor assigned product number (byte 1)
0x01 ; Serial Number Byte 0
0x00 ; Serial Number Byte 1
0x00 ; Serial Number Byte 2
0x00 ; Serial Number Byte 3
0x00 ; Special LFSR checksum (PnP specification appendix B)
; NOTE: The checksum field is autmatically calculated by
; PNPMAP.EXE so I leave it as 0x00
;---------------------------------------------------------------------------
; PnP Version
;
; The PnP version entry tells the PnP initialization software which
; version of the PnP specification the hardware is compatible with.
;---------------------------------------------------------------------------
0x0A ; PnP Version - Small item, PnP version tag, 2 bytes
0x10 ; InterWave is compatible with PnP spec 1.0
0x10 ; InterWave EEPROM version 1.0
;---------------------------------------------------------------------------
; ANSI Identifier string
;
; The Ansi Identifier string is an ASCII text string to display to the
; user for prompts and messages about the InterWave board.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x14 ; Length byte 0 (low byte) - In total, 0x14h = 20 bytes long
0x00 ; Length byte 1 (high byte)
'MED3201 - Audio Card'
; Actual ANSI identifier
;---------------------------------------------------------------------------
; Vendor Defined Information
;
; This block contains information regarding the InterWave board.
;
; This is the definition of the vendor specific section, as defined by
; CSE:
;
; All data items are ASCIIZ, which means they are ASCII and terminated by
; a binary zero.
;
; All data items are prefixed by a 3 character type, which defines the
; type of data that follows.
;
; Normally, only one of each possible type of data item is allowed. The
; identifiers that are currently defined are:
;
; VERn.n - ASCIIZ Vendor defined block version number
; PID - ASCIIZ InterWave Part Identifier
; BID - ASCIIZ Board Identifier
;
; Since the data is ASCII, it must be followed by a zero byte terminator.
;
; What this data is used for:
;
; Future versions of the CSE SETUP utilities will read the Plug & Play
; EEPROM to determine what board is currently installed and will install
; the appropriate drivers and configuration files as required to operate
; the InterWave board. This data is used in addition to the vendor ID,
; so if you turn a revision of the board, PLEASE notify CSE as necessary,
; so we can maintain this data.
;---------------------------------------------------------------------------
;
0x84 ; Vendor defined data - Large item, ID string tag
0x1F ; Length byte 0 (low byte) - In total, 31 bytes long
0x00 ; Length byte 1 (high byte)
; Strings are NULL terminated.
'VER1.2' ; (7=6+1) Vendor defined data version 1.2
0x00
'PIDAm78C201 B2'; (15=14+1) Part Identifier and revision (space seperated)
0x00
'BIDLT 1A' ; (9=8+1) Board Identifier and revision (space seperated)
0x00
;===========================================================================
; Logical Device Block (0)
;
; The logical device defines the resources used by a specific function of
; the PnP device. The first logical device defined for InterWave is the
; InterWave synthesizer. Note that all resource information following
; the Logical Device Block applies to the previous Logical Device, until
; a new Logical Device Block is declared.
;===========================================================================
0x15 ; Small item, logical device ID, 5 bytes long
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x00 ; Vendor assigned function ID (byte 0)
0x10 ; Vendor assigned function ID (byte 1)
0x02 ; flags[1] = supports commands at index 0x31
;---------------------------------------------------------------------------
; ANSI Identifier string (0)
;
; The Ansi Identifier string is an ASCII text string to display to the user
; for prompts and messages about the InterWave board.
;
; Note - It turns out that the first release of Windows 95 does not use
; the information stored in this field; instead, it uses the .INF file to
; determine the ASCII string for this logical device. However, it does
; show up in the registry.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x0D ; Length byte 0 (low byte) - In total, 13 bytes long
0x00 ; Length byte 1 (high byte)
'Synth & Codec' ; Actual ANSI identifier
;---------------------------------------------------------------------------
; InterWave Synthesizer IRQ structure (0)
;
; The IRQ structure defines which IRQs are supported for the
; specified logical device.
;
; Note: The familiar concept of describing ISA bus IRQ 2 as
; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
; causes Windows 95 to prevent the interrupt from being
; selected (copnflict with the interrupt controller). The
; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
; is by specifying IRQ 9.
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
; InterWave Synthesizer DMA structure (0)
;
; The DMA structure defines which DMA channels are supported for
; the specified logical device. In our case, we require two DMA
; channels for the InterWave device, hence the need for two DMA
; structures. The first DMA specifier, DMA 1, is for Record. It
; is an eight-bit channel. The second, DMA 5, is for Play. It is
; a 16-bit channel. Note that SB/AdLib uses DMA 1 also but it picks
; this up automatically if its DMA is not assigned using pnp
; procedures as is the case here. The only negative result of this
; is that one cannot Record while SBOS is active.
;
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
; InterWave Synthesizer I/O port descriptor (0)
;
; The I/O port descriptor defines which I/O ports are supported
; for the specified logical device.
;
; Note that the "start dependent function", and "end dependent
; function", is not part of the I/O port descriptor. It is used
; to tell the PnP configuration software that this logical device
; has a preferred configuration for this resource (in our case,
; the synthesizer's preferred I/O resource is 220h/320h/32Ch),
; and what that preferred configuration is.
;
; Although the InterWave can support a large number of possible
; I/O port configurations, for backwards compatibility with
; Gravis software (and to make Sound Blaster emulation work),
; the only addresses allowed are 220h/320h/32Ch and
; 240h/340h/34Ch.
;---------------------------------------------------------------------------
;-----------------------------;
; Configuration 0 (preferred) ;
;-----------------------------;
0x31 ; Small item, start dependent function, 1 byte long
0x00 ; 00 = Preferred resource configuration
0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
0x00 ; Pic 0: 00 = 00000000
0x08 ; Pic 1: 18 = 00001000 (IRQ 11)
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
0x80 ; E8 = 10000000 (DMA 7)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
0x40 ; F8 = 01000000 (DMA 6)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x20 ; P2xR I/O address low = 220h
0x02 ; P2xR I/O address high = 220h
0x10 ; P2xR I/O address width = 16 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x20 ; P3xR I/O address low = 320h
0x03 ; P3xR I/O address high = 320h
0x08 ; P3xR I/O address width = 8 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x2C ; PCODAR I/O address low = 32Ch
0x03 ; PCODAR I/O address high = 32Ch
0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
;------------------------------;
; Configuration 1 (acceptible) ;
;------------------------------;
0x31 ; Small item, start dependent function, 1 byte long
0x01 ; Acceptable configuration
0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
0x88 ; Pic 0: B0 = 10001000 (IRQ 7, 5, 3)
0x9A ; Pic 1: 9C = 10011010 (IRQ 15, 12, 11, 9)
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
0xE8 ; E8 = 11101000 (DMA 7, 6, 5, 3)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
0xF8 ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x20 ; P2xR I/O address low = 220h
0x02 ; P2xR I/O address high = 220h
0x10 ; P2xR I/O address width = 16 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x20 ; P3xR I/O address low = 320h
0x03 ; P3xR I/O address high = 320h
0x08 ; P3xR I/O address width = 8 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x2C ; PCODAR I/O address low = 32Ch
0x03 ; PCODAR I/O address high = 32Ch
0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
;------------------------------;
; Configuration 2 (Sub-optimal);
;------------------------------;
0x31 ; Small item, start dependent function, 1 byte long
0x02 ; 02 = Sub-optimal resource configuration, not best
0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
0x88 ; Pic 0: 88 = 10001000 (IRQ 7, 3)
0x9A ; Pic 1: 9A = 10011010 (IRQ 15, 12, 11, 9)
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
0xE8 ; E8 = 11101000 (DMA 7, 6, 5, 3)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
0xF8 ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x40 ; P2xR I/O address low = 240h
0x02 ; P2xR I/O address high = 240h
0x10 ; P2xR I/O address width = 16 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x40 ; P3xR I/O address low = 340h
0x03 ; P3xR I/O address high = 340h
0x08 ; P3xR I/O address width = 8 contiguous I/O ports
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x4C ; PCODAR I/O address low = 34Ch
0x03 ; PCODAR I/O address high = 34Ch
0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
0x38 ; Small item, end dependent function, 0 bytes long
;
;===========================================================================
; Logical Device Block (1)
;
; This device is not in use.
;===========================================================================
0x15 ; Small item, logical device ID, 5 bytes long
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x00 ; Vendor assigned function ID (byte 0)
0x11 ; Vendor assigned function ID (byte 1)
0x02 ; flags[1] = supports commands at index 0x31
;---------------------------------------------------------------------------
; ANSI Identifier string (1)
;
; The Ansi Identifier string is an ASCII text string to display
; to the user for prompts and messages about the InterWave board.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x15 ; Length byte 0 (low byte) - In total, 11 bytes long
0x00 ; Length byte 1 (high byte)
'Disabled ATAPI CD-ROM' ; Actual ASCII identifier
;---------------------------------------------------------------------------
; Disabled ATAPI CD-ROM Device gets no resources assigned.
;---------------------------------------------------------------------------
;
;;---------------------------------------------------------------------------
;; Compatible Device Block (1)
;;
;; The InterWave ATAPI CD-ROM interface is compatible with the
;; generic ATA/IDE/ESDI interface. We can tell the PnP manager
;; that this is true by specifying a compatible device block.
;; The PnP device ID for a ATA/IDE/ESDI interface is PNP0600
;; (see the Microsoft document DEVIDS.TXT).
;;---------------------------------------------------------------------------
;
;0x1C ; Small item, compatible device ID, 4 bytes long
;0x41 ; Device ID "PNPFFFF" in standard PnP vendor ID notation
;0xD0
;0xFF
;0xFF
;
;;---------------------------------------------------------------------------
;; InterWave CD-ROM IRQ structure
;;
;; The IRQ structure defines which IRQs are supported for the
;; specified logical device. In our case, we require one IRQ
;; for the InterWave CD-ROM.
;;
;; Note: The familiar concept of describing ISA bus IRQ 2 as
;; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
;; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
;; causes Windows 95 to prevent the interrupt from being
;; selected (conflict with the interrupt controller). The
;; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
;; is by specifying IRQ 9.
;;---------------------------------------------------------------------------
;
;0x22 ; Small item, IRQ tag, 2 bytes long (CD-ROM IRQ)
;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
;0x9C ; Pic 1: 9C = 10011100 (IRQ 15, 12, 11, 10)
;
;;---------------------------------------------------------------------------
;; InterWave CD-ROM I/O port descriptor
;;
;; The I/O port descriptor defines which I/O ports are supported
;; for the specified logical device.
;;
;; Note that the "start dependent function", and "end dependent
;; function", is not part of the I/O port descriptor. It is used
;; to tell the PnP configuration software that this logical device
;; has a preferred configuration for this resource (in our case,
;; the CD-ROM's preferred I/O resource is 170h/376h), and what
;; that preferred configuration is.
;;---------------------------------------------------------------------------
;;
;;-----------------------------;
;; Configuration 0 (preferred) ;
;;-----------------------------;
;
;0x31 ; Small item, start dependent function, 1 bytes long
;0x00 ; 00 = Preferred I/O resource configuration
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x50 ; PCDRAR I/O address low = 150h
;0x01 ; PCDRAR I/O address high = 170h
;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
;0x38 ; End dependent function tag
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x76 ; PATAAR I/O address low = 376h
;0x03 ; PATAAR I/O address high = 376h
;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
;
;;-----------------------------;
;; Configuration 1 (alternate) ;
;;-----------------------------;
;
;0x31 ; Small item, start dependent function, 1 bytes long
;0x01 ; 01 = Acceptable I/O resource configuration, not best
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x68 ; PCDRAR I/O address low = 168h
;0x01 ; PCDRAR I/O address high = 168h
;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x6E ; PATAAR I/O address low = 36Eh
;0x03 ; PATAAR I/O address high = 36Eh
;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
;
;;-----------------------------;
;; Configuration 2 (alternate) ;
;;-----------------------------;
;
;0x31 ; Small item, start dependent function, 1 bytes long
;0x01 ; 01 = Acceptable I/O resource configuration, not best
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0xE8 ; PCDRAR I/O address low = 1E8h
;0x01 ; PCDRAR I/O address high = 1E8h
;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0xEE ; PATAAR I/O address low = 3EEh
;0x03 ; PATAAR I/O address high = 3EEh
;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
;
;0x38 ; End dependent function tag
;===========================================================================
; Logical Device Block (2)
;
; The third logical device on the InterWave part is the joystick
; (game port) interface. The joystick only uses a single
; I/O port.
;===========================================================================
0x15 ; Small item, logical device ID, 5 bytes long
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x00 ; Vendor assigned function ID (byte 0)
0x12 ; Vendor assigned function ID (byte 1)
0x02 ; flags[1] = supports commands at index 0x31
;---------------------------------------------------------------------------
; Compatible Device Block (2)
;
; The InterWave joystick interface is compatible with the generic
; gameport. We can tell the PnP manager that this is true by
; by specifying a compatible device block. The PnP device ID for
; the generic gameport is PNPB02F (see the Microsoft document
; DEVIDS.TXT).
;---------------------------------------------------------------------------
0x1C ; Small item, compatible device ID, 4 bytes long
0x41 ; Device ID "PNPB02F" in standard PnP vendor ID notation
0xD0
0xB0
0x2F
;---------------------------------------------------------------------------
; ANSI Identifier string (2)
;
; The Ansi Identifier string is an ASCII text string to display
; to the user for prompts and messages about the InterWave board.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x09 ; Length byte 0 (low byte) - In total, 9 bytes long
0x00 ; Length byte 1 (high byte)
'Game Port' ; Actual ANSI identifier
;---------------------------------------------------------------------------
; InterWave Joystick I/O descriptor block (2)
;
; We only support a single I/O address for the joystick, for
; games compatibility.
;---------------------------------------------------------------------------
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x01 ; P2xR I/O address low = 201h
0x02 ; P2xR I/O address high = 201h
0x01 ; P2xR I/O address width = 1 I/O port
;===========================================================================
; Logical Device Block (3)
;
; The fourth logical device on the InterWave part is the Adlib
; FM register set and Sound Blaster interrupt line.
;===========================================================================
0x15 ; Small item, logical device ID, 5 bytes long
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x00 ; Vendor assigned function ID (byte 0)
0x13 ; Vendor assigned function ID (byte 1)
0x02 ; flags[1] = supports commands at index 0x31
;-------------------------------------------------------------------------
; ANSI Identifier string (3)
;
; The Ansi Identifier string is an ASCII text string to display
; to the user for prompts and messages about the InterWave board.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x10 ; Length byte 0 (low byte) - In total, 16 bytes long
0x00 ; Length byte 1 (high byte)
'SB Digital Audio' ; Actual ANSI identifier
;---------------------------------------------------------------------------
; InterWave Sound Blaster IRQ structure (3)
;
; The IRQ structure defines which IRQs are supported for the
; specified logical device. In our case, we require one IRQ
; for the InterWave Sound Blaster device.
;
; Note: The familiar concept of describing ISA bus IRQ 2 as
; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
; causes Windows 95 to prevent the interrupt from being
; selected (conflict with the interrupt controller). The
; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
; is by specifying IRQ 9.
;---------------------------------------------------------------------------
0x31 ; Small item, start dependent function, 1 byte long
0x00 ; 00 = Preferred IRQ resource configuration
0x22 ; Small item, IRQ tag, 2 bytes long (SB IRQ)
0x20 ; Pic 0: 20 = 00100000 (IRQ 5)
0x00 ; Pic 1: 00 = 00000000 (No IRQ on upper PIC)
0x31 ; Small item, start dependent function, 1 byte long
0x02 ; 02 = Sub-optimal IRQ resource configuration, not best
0x22 ; Small item, IRQ tag, 2 bytes long (SB IRQ)
0xA0 ; Pic 0: A0 = 10100000 (IRQ 7, 5)
0x00 ; Pic 1: 00 = 00000000 (no upper IRQs allowed for SB)
0x38 ; Small item, end dependent function, 0 bytes long
;---------------------------------------------------------------------------
; InterWave Adlib (Yamaha OPL-II FM) I/O descriptor block (3)
;
; We only support a single I/O address for the Adlib FM, for
; games compatibility.
;---------------------------------------------------------------------------
0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
0x88 ; FM I/O address low = 388h
0x03 ; FM I/O address high = 388h
0x02 ; FM I/O address width = 2 consecutive I/O ports
;---------------------------------------------------------------------------
; InterWave SB DMA structure (3)
;
; The DMA structure defines which DMA channels are supported for
; the specified logical device. In our case, we require one DMA
; channel (1) for Sound Blaster DMA. However, the SYNTH\CODEC device
; uses DMA 1 for Record. This is the same channel SBOS needs. We do
; not request a DMA channel here because SBOS picks up DMA channel 1
; automatically if its DMA is not assigned using pnp procedures as
; is the case here. The only negative result of this is that one
; cannot Record while SBOS is active.
;
;---------------------------------------------------------------------------
0x2A ; Small item, DMA descriptor, 2 bytes long (SB DMA)
0x02 ; 02 = 00000010 (DMA 1 only)
0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
;===========================================================================
; Logical Device Block (4)
;
; The fifth logical device on the InterWave part is the MPU-401
; device.
;===========================================================================
0x15 ; Small item, logical device ID, 5 bytes long
0x13 ; Vendor ID Byte 0
0x10 ; Vendor ID Byte 1
0x00 ; Vendor assigned function ID (byte 0)
0x14 ; Vendor assigned function ID (byte 1)
0x02 ; flags[1] = supports commands at index 0x31
;---------------------------------------------------------------------------
; ANSI Identifier string (4)
;
; The Ansi Identifier string is an ASCII text string to display
; to the user for prompts and messages about the InterWave board.
;---------------------------------------------------------------------------
0x82 ; ANSI identifier string - Large item, ID string tag
0x08 ; Length byte 0 (low byte) - In total, 8 bytes long
0x00 ; Length byte 1 (high byte)
'GM Music' ; Actual ANSI identifier
;---------------------------------------------------------------------------
; InterWave MPU-401 IRQ structure (4)
;
; The IRQ structure defines which IRQs are supported for the
; specified logical device. In our case, we require one IRQ
; for the InterWave MPU-401 device.
;
; Note: The familiar concept of describing ISA bus IRQ 2 as
; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
; causes Windows 95 to prevent the interrupt from being
; selected (conflict with the interrupt controller). The
; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
; is by specifying IRQ 9.
;---------------------------------------------------------------------------
;
;0x31 ; Small item, start dependent function, 1 byte long
;0x00 ; 00 = Preferred I/O resource configuration
;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
;0x02 ; Pic 1: 02 = 00000010 (IRQ 9)
;0x30 ; Small item, start dependent function, 0 bytes long
;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
;0x04 ; Pic 1: 04 = 00000100 (IRQ 10)
;0x30 ; Small item, start dependent function, 0 bytes long
;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
;0x08 ; Pic 1: 08 = 00001000 (IRQ 11)
;0x38 ; End dependent function tag
;---------------------------------------------------------------------------
; InterWave MPU-401 (General MIDI) I/O descriptor block (4)
;
; Many games support a variety of addresses for the MPU-401 I/O
; base address. For PnP, we are telling the PnP manager that
; we support: 330h, 332h, 334h, and 336h.
;---------------------------------------------------------------------------
0x31 ; Small item, start dependent function, 1 byte long
0x00 ; 00 = Preferred I/O resource configuration
0x4B ; Small item, Fixed I/O port descriptor, 3 bytes long
0x30 ; Lowest I/O base address (low byte) = 330h
0x03 ; Lowest I/O base address (high byte) = 330h
0x02 ; MPU-401 requires 2 consecutive I/O ports
0x31 ; Small item, start dependent function, 1 byte long
0x01 ; 01 = Acceptible I/O resource configuration, not best
0x47 ; Small item, I/O port descriptor, 7 bytes long
0x01 ; 16-bit I/O decode
0x30 ; Lowest I/O base address (low byte) = 330h
0x03 ; Lowest I/O base address (high byte) = 330h
0x36 ; Highest I/O base address (low byte) = 336h
0x03 ; Highest I/O base address (high byte) = 336h
0x02 ; I/O port must be aligned on a 2 byte boundary
0x02 ; MPU-401 requires 2 consecutive I/O ports
0x38 ; End dependent function
;;===========================================================================
;; Logical Device Block (5)
;; This device activates the external telephony support circuit.
;; In our case I only the the I/O Ports to be enabled (address is decoded)
;; No IRQ is needed
;;===========================================================================
;
;0x15 ; Small item, logical device ID, 5 bytes long
;0x13 ; Vendor ID Byte 0
;0x10 ; Vendor ID Byte 1
;0x00 ; Vendor assigned function ID (byte 0)
;0x15 ; Vendor assigned function ID (byte 1)
;0x02 ; flags[1] = supports commands at index 0x31
;
;;---------------------------------------------------------------------------
;; ANSI Identifier string (5)
;;---------------------------------------------------------------------------
;
;0x82 ; ANSI identifier string - Large item, ID string tag
;0x0E ; Length byte 0 (low byte) - In total, 14 bytes long
;0x00 ; Length byte 1 (high byte)
;'3D Spatializer'
;
;;---------------------------------------------------------------------------
;; These are the supported resources (5)
;;---------------------------------------------------------------------------
;
;0x31 ; Small item, start dependent function, 1 byte long
;0x00 ; 00 = Preferred I/O resource configuration
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x50 ; PTELAR I/O address Base (low byte)= 0x350
;0x03 ; PTELAR I/O address Base (high byte)= 0x350
;0x08 ; Sixth Logical Device allows 8 consecutive ports
;
;
;0x31 ; Small item, start dependent function, 1 byte long
;0x02 ; 02 = Sub-optimal I/O resource configuration, not best
;
;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
;0x60 ; PTELAR I/O address Base (low byte)= 0x360
;0x03 ; PTELAR I/O address Base (high byte)= 0x360
;0x08 ; Sixth Logical Device allows 8 consecutive ports
;
;0x38 ; End dependent flag
;
;===========================================================================
; End tag
;
; The end tag defines the end of the EEPROM, and the EEPROM
; checksum. Note that the checksum of zero means "unknown
; checksum", and that the PnP manager should not bother to verify
; that the EEPROM checksum is correct.
;===========================================================================
0x79
0x00